package com.gui.user;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableCellRenderer;

import com.controller.UserCon;
import com.gui.baseframe.BaseFrame;
import com.gui.login.LoginAll;

public class UserIndex extends BaseFrame {
	protected static final String String = null;
	JTable table;
	public UserIndex() { 
		setLayout(new BorderLayout());

		// 设置总布局 
		// 菜单栏
		/*
		 * JMenu jm=new JMenu("File") ; //创建JMenu菜单对象 JMenuItem t12=new
		 * JMenuItem("退出   Ctrl+Shift+Esc") ;//菜单项 jm.add(t12) ; //将菜单项目添加到菜单
		 * JMenuBar br=new JMenuBar() ; //创建菜单工具栏 br.add(jm) ; //将菜单增加到菜单工具栏
		 * index.setJMenuBar(br) ; //为 窗体设置 菜单工具栏
		 */
		// 选项卡
		JTabbedPane jp = new JTabbedPane(JTabbedPane.TOP);
		// 调整位置
		jp.setBorder(new EmptyBorder(20, 20, 20, 20));
		JPanel p1 = createJP1();
		JPanel p2 = createJP2();
		JPanel p3 = createJP3(); // 创建多个容器
		jp.add("图书查询", p1);
		jp.add("图书借阅", p2);
		jp.add("个人中心", p3);
		this.add(jp, BorderLayout.CENTER); // 将选项卡窗体添加到 主窗体上去
		init();
	}

	
	private JPanel createJP1() {
		// 选项卡1的布局
		JPanel jp = new JPanel();
		jp.setLayout(new BorderLayout());
		// 布局格式
		// JPanel p1_2 = new JPanel();
		JPanel p1_20 = new JPanel();
		JPanel p1_1 = new JPanel();
		JPanel p1_11 = new JPanel();
		JPanel p1_12 = new JPanel();
		// JScrollPane p1_2=new JScrollPane();//滚动条panle面板
		JPanel p1_3 = new JPanel();
		p1_1.setLayout(new GridLayout(2, 1));
		// 下拉菜单
		JComboBox<String> jcb1 = new JComboBox<String>();
		jcb1.addItem("按书名查找");
		jcb1.addItem("按图书编号查找");
		jcb1.addItem("按种类查找");
		jcb1.addItem("按出版社查找");
		// 文本框
		JTextField jtf1 = new JTextField(20);
		// 按钮
		JButton jb1 = new JButton("查询");
		
		jb1.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// 测试监听
				UserCon us = new UserCon();
				// 清空
				p1_20.removeAll();
				// 下拉菜单的脚标
				table = us.userselect(jcb1.getSelectedIndex(), jtf1.getText());
				//设置表格内容居中
				us.settable(table);
				//设置表格个别列宽
			    table.getColumnModel().getColumn(1).setPreferredWidth(90);
			    table.getColumnModel().getColumn(2).setPreferredWidth(50);
			    table.getColumnModel().getColumn(3).setPreferredWidth(50);
			    table.getColumnModel().getColumn(4).setPreferredWidth(50);
				table.setVisible(true);
				table.setEnabled(false);
				// 滚动条panle面板
				JScrollPane p1_2 = new JScrollPane(table);
				p1_20.add(p1_2);
				//刷新各个面板
				p1_20.updateUI();
				p1_2.updateUI();
				jp.updateUI();
			}
		});
		// 标签
		JLabel jl1 = new JLabel("欢迎用户登入图书管理系统");
		p1_11.add(jl1);
		p1_12.add(jcb1);
		p1_12.add(jtf1);
		p1_12.add(jb1);
		// p1_2.add(jt1);
		// 添加到总布局里
		p1_1.add(p1_11);
		p1_1.add(p1_12);
		jp.add(p1_1, BorderLayout.NORTH);// 上
		jp.add(p1_20, BorderLayout.CENTER); // 中
		jp.add(p1_3, BorderLayout.SOUTH);// 下
		return jp;
	}

	// ====================================================================================
	private JPanel createJP2() {
		// 选项卡2的布局
		JPanel jp = new JPanel();
		jp.setLayout(new BorderLayout());
		// 布局格式
		JPanel p1_1 = new JPanel();
		JPanel p1_2 = new JPanel();
		JPanel p1_3 = new JPanel();
		// 标签
		JLabel jl1 = new JLabel("图书清单");
		p1_1.add(jl1);
		// 查询组件
		JComboBox<String> jcb1 = new JComboBox<String>();
		jcb1.addItem("按书名查找");
		jcb1.addItem("按图书编号查找");
		jcb1.addItem("按种类查找");
		jcb1.addItem("按出版社查找");
		JComboBox<String> jcb2 = new JComboBox<String>();
		jcb2.addItem("我要借书");
		jcb2.addItem("我要还书");
		JButton jb1 = new JButton("查询");
		JButton jb2 = new JButton("还书");
		JButton jb3 = new JButton("借书");
		JButton jb4 = new JButton("刷新");
		// 文本框
		JTextField jtf1 = new JTextField(20);
		// 查询按钮监听器
				jb1.addActionListener(new ActionListener() {
					@Override
					public void actionPerformed(ActionEvent e) {
						// 测试监听
						UserCon us = new UserCon();
						// 清空
						p1_2.removeAll();
						table = us.userselect(jcb1.getSelectedIndex(), jtf1.getText());
						//设置表格
						us.settable(table);
//						table.getColumnModel().getColumn(1).setPreferredWidth(90);
//					    table.getColumnModel().getColumn(2).setPreferredWidth(50);
//					    table.getColumnModel().getColumn(3).setPreferredWidth(50);
//					    table.getColumnModel().getColumn(4).setPreferredWidth(50);
						// 显示表格
						table.setVisible(true);
						// 滚动条panle面板
						JScrollPane p1_21 = new JScrollPane(table);
						// 滚动条面板放到中间面板
						p1_2.add(p1_21);
						// 刷新各个面板
						p1_2.updateUI();
						p1_21.updateUI();
						jp.updateUI();
						p1_2.setVisible(true);
					}
				});
		
		// 借书 按钮监听器
		jb3.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// 1、获得table的选中行
				int index = 0;
				index = table.getSelectedRow();
				String id = "null";
				String name = "null";
				String type = "null";
				String price = "null";
				String num = "null";
				String company = "null";
				String nowtime="null";
				if (index >= 0) {
					// 所选行的各个字段
					id = (String) table.getValueAt(index, 0);
					name = (String) table.getValueAt(index, 1);
					type = (String) table.getValueAt(index, 2);
					price = (String) table.getValueAt(index, 3);
					num = (String) table.getValueAt(index, 4);
					company = (String) table.getValueAt(index, 5);
					Date date=new Date();
					SimpleDateFormat qwe=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
					nowtime=qwe.format(date);
				}
				UserCon us = new UserCon();
				// 弹出提示框
				if (index < 0) {
					JOptionPane.showMessageDialog(null, "您未选中图书", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
				}
				if (num.equals("0")) {
					JOptionPane.showMessageDialog(null, "该书已被借出", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
				} else if (num.equals("1")) {
					Object[] options = { "确定", "取消" };
					int m = JOptionPane.showOptionDialog(null, "您确定借阅该书？", "温馨提示之终极确认", JOptionPane.YES_NO_OPTION,
							JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
					if (m == 0) {
						table = us.insert_intoBorrow(id, name, type, price, num, company,nowtime);
						//设置表格
						us.settable(table);
						table.getColumnModel().getColumn(1).setPreferredWidth(90);
					    table.getColumnModel().getColumn(2).setPreferredWidth(50);
					    table.getColumnModel().getColumn(3).setPreferredWidth(50);
					    table.getColumnModel().getColumn(4).setPreferredWidth(50);
						JOptionPane.showMessageDialog(null, "恭喜您借阅成功", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
					} else if (m == 1) {
						us.clear(p1_2);
						p1_2.removeAll();
						table = us.change(jb1, jb2, jb3, jcb2, p1_2);
						//设置表格
						us.settable(table);
						table.getColumnModel().getColumn(1).setPreferredWidth(90);
					    table.getColumnModel().getColumn(2).setPreferredWidth(50);
					    table.getColumnModel().getColumn(3).setPreferredWidth(50);
					    table.getColumnModel().getColumn(4).setPreferredWidth(50);
						// 显示表格
						table.setVisible(true);
						// 滚动条panle面板
						JScrollPane p1_21 = new JScrollPane(table);
						// 滚动条面板放到中间面板
						p1_2.add(p1_21);
						// 刷新各个面板
						p1_2.updateUI();
						p1_21.updateUI();
						jp.updateUI();
						p1_2.setVisible(true);
					}
				}
				// 清空
				p1_2.removeAll();
				// 显示表格
				table.setVisible(true);
				// 滚动条panle面板
				JScrollPane p1_21 = new JScrollPane(table);
				// 滚动条面板放到中间面板
				p1_2.add(p1_21);
				// 刷新各个面板
				p1_2.updateUI();
				p1_21.updateUI();
				jp.updateUI();
				p1_2.setVisible(true);
			}
		});
		//还书按钮监听器
		jb2.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// 1、获得table的选中行
				int index = 0;
				index = table.getSelectedRow();
				// 所选行的各个字段
				if (index >= 0) {
					String id = (String) table.getValueAt(index, 0);
					UserCon us = new UserCon();
					// 弹出提示框
					Object[] options = { "确定", "取消" };
					int m = JOptionPane.showOptionDialog(null, "您确定要归还该书？", "温馨提示之终极确认", JOptionPane.YES_NO_OPTION,
							JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
					if (m == 0) {
						JOptionPane.showMessageDialog(null, "恭喜您还书成功", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
						table = us.insert_intoBook(id);
						//设置表格
						us.settable(table);
						table.getColumnModel().getColumn(1).setPreferredWidth(90);
					    table.getColumnModel().getColumn(2).setPreferredWidth(50);
					    table.getColumnModel().getColumn(3).setPreferredWidth(50);
					    table.getColumnModel().getColumn(4).setPreferredWidth(50);
						// 清空
						p1_2.removeAll();
						// 显示表格
						table.setVisible(true);
						// 滚动条panle面板
						JScrollPane p1_21 = new JScrollPane(table);
						// 滚动条面板放到中间面板
						p1_2.add(p1_21);
						// 刷新各个面板
						p1_2.updateUI();
						p1_21.updateUI();
						jp.updateUI();
						p1_2.setVisible(true);
					} else if (m == 1) {
						us.clear(p1_2);
						p1_2.removeAll();
						table = us.change(jb1, jb2, jb3, jcb2, p1_2);
						//设置表格
						us.settable(table);
						table.getColumnModel().getColumn(1).setPreferredWidth(90);
					    table.getColumnModel().getColumn(2).setPreferredWidth(50);
					    table.getColumnModel().getColumn(3).setPreferredWidth(50);
					    table.getColumnModel().getColumn(4).setPreferredWidth(50);
						// 显示表格
						table.setVisible(true);
						// 滚动条panle面板
						JScrollPane p1_21 = new JScrollPane(table);
						// 滚动条面板放到中间面板
						p1_2.add(p1_21);
						// 刷新各个面板
						p1_2.updateUI();
						p1_21.updateUI();
						jp.updateUI();
						p1_2.setVisible(true);
					}
				} else if (index < 0) {
					JOptionPane.showMessageDialog(null, "您未选中要还的图书", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
				}
			}
		});
		// 刷新按钮 监听器
		jb4.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				UserCon us = new UserCon();
				us.clear(p1_2);
				p1_2.removeAll();
				table = us.change(jb1, jb2, jb3, jcb2, p1_2);
				//设置表格
				us.settable(table);
//				table.getColumnModel().getColumn(1).setPreferredWidth(90);
//			    table.getColumnModel().getColumn(2).setPreferredWidth(50);
//			    table.getColumnModel().getColumn(3).setPreferredWidth(50);
//			    table.getColumnModel().getColumn(4).setPreferredWidth(50);
				// 显示表格
				table.setVisible(true);
				// 滚动条panle面板
				JScrollPane p1_21 = new JScrollPane(table);
				// 滚动条面板放到中间面板
				p1_2.add(p1_21);
				// 刷新各个面板
				p1_2.updateUI();
				p1_21.updateUI();
				jp.updateUI();
				p1_2.setVisible(true);
			}
		});
		// 下拉列表监听器
		jcb2.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				UserCon us = new UserCon();
				p1_2.removeAll();
				table = us.change(jb1, jb2, jb3, jcb2, p1_2);
				//设置表格
				us.settable(table);
				table.getColumnModel().getColumn(1).setPreferredWidth(90);
			    table.getColumnModel().getColumn(2).setPreferredWidth(50);
			    table.getColumnModel().getColumn(3).setPreferredWidth(50);
			    table.getColumnModel().getColumn(4).setPreferredWidth(50);
				// 显示表格
				table.setVisible(true);
				// 滚动条panle面板
				JScrollPane p1_21 = new JScrollPane(table);
				// 滚动条面板放到中间面板
				p1_2.add(p1_21);
				// 刷新各个面板
				p1_2.updateUI();
				p1_21.updateUI();
				jp.updateUI();
				p1_2.setVisible(true);
			}
		});
		
		p1_3.add(jcb2);
		p1_3.add(jb1);
		//默认借书操作 还书按钮不可用
		jb2.setEnabled(false);
		p1_3.add(jb2);
		p1_3.add(jb3);
		p1_3.add(jb4);
		p1_3.add(jcb1);
		p1_3.add(jtf1);
		// 添加到总布局里
		jp.add(p1_1, BorderLayout.NORTH);
		jp.add(p1_2, BorderLayout.CENTER);
		jp.add(p1_3, BorderLayout.SOUTH);
		return jp;
	}
	// ====================================================================================
	
	private JPanel createJP3() {
		// 选项卡3的布局
		JPanel jp = new JPanel();
		jp.setLayout(new BorderLayout());
		// 布局格式
		JPanel p1_1 = new JPanel();
		JPanel p1_2 = new JPanel();
		// 上面板
		JLabel jl1_1 = new JLabel("会员信息");
		p1_1.add(jl1_1);
		// 下面版
		JLabel jl1 = new JLabel("姓名");
		p1_2.add(jl1);
		JTextField jt1 = new JTextField(10);
		jt1.setText("******");
		jt1.setEditable(false);
		p1_2.add(jt1);
		JLabel jl2 = new JLabel("过失数");
		p1_2.add(jl2);
		JTextField jt2 = new JTextField(10);
		jt2.setText("******");
		jt2.setEditable(false);
		p1_2.add(jt2);
		
		JButton jb1 = new JButton("显示/隐藏");
		JButton jb2 = new JButton("修改密码");


		
		
		String userName=LoginAll.getUser();
		
		
		// 显示/隐藏按钮 监听器
		jb1.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				UserCon uc = new UserCon();
				if ("隐藏".equals(jb1.getName())) {
					uc.hide(jt1, jt2);
					jb1.setName("显示");
				} else {
					uc.show(jt1, jt2,userName);
					jb1.setName("隐藏");
				}
			}
		});
		// 修改密码按钮 监听器
		jb2.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				UserCon uc = new UserCon();
				uc.updatepass(userName);
			}
		});
		
		p1_2.add(jb1);
		p1_2.add(jb2);
		// 添加到总布局里
		jp.add(p1_1, BorderLayout.NORTH);
		jp.add(p1_2, BorderLayout.CENTER);
		return jp;
	}

}
